home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 5 / Gold Medal Software - Volume 5 (Gold Medal) (1995).iso / music / pbcdk10.arj / ACDKIT.ZIP / ACDKIT.BAS next >
BASIC Source File  |  1994-10-15  |  4KB  |  154 lines

  1. DEFINT A-Z
  2. $DYNAMIC
  3.  
  4. $INCLUDE "ACDKIT.BI"     ' If you get an error on these lines, then
  5. $LINK "ACDKIT.PBL"       ' you did not start PowerBASIC from the
  6.                          ' directory where ACDKIT.BAS is installed.
  7.  
  8.     DECLARE FUNCTION TimeStr$ (BYVAL mins%, BYVAL secs%)
  9.     DECLARE SUB UpdateDisplay ()
  10.  
  11.     %FALSE = 0
  12.     %TRUE = NOT %FALSE
  13.  
  14.     DIM tracklist(0) AS SHARED trackinfo     ' music track information array
  15.     DIM cd AS SHARED cdInfoTYPE              ' track info
  16.     DIM cddrive AS SHARED INTEGER            ' first cdrom drive
  17.     DIM curTrack AS SHARED INTEGER           ' current track number
  18.     DIM keypress AS SHARED STRING
  19.  
  20.     curTrack = 1
  21.  
  22.     IF IsMSCDEX = %FALSE THEN
  23.         CLS: PRINT "MSCDEX.EXE driver is not installed."
  24.         END
  25.     END IF
  26.  
  27.     cddrive = GetFirstCDROM%                 ' get the first cdrom drive
  28.  
  29.     cdMediaChanged cddrive%                  ' clear changed flag
  30.  
  31. RESTART:
  32.  
  33.     CLS
  34.  
  35.     IF IsAudio(cddrive) = %FALSE THEN        ' is this an audio cd?
  36.         PRINT "The inserted cd is not an audio cd."
  37.         PRINT "Please insert an audio cd and restart."
  38.         END
  39.     END IF
  40.  
  41.     cdInit cddrive%, tracklist()             ' read cd information
  42.  
  43.     IF (cd.status AND %CDPLAYING) <> %CDPLAYING THEN
  44.         cdSeek cddrive%, 1, tracklist()  ' seek to first song
  45.     END IF
  46.  
  47.     PRINT "┌────────────────────────────────────┐"
  48.     PRINT "│          AUDIO CD TOOLKIT          │"
  49.     PRINT "├────────────────────┬───────┬───────┤"
  50.     PRINT "│ Audio Track(s)     │       │       │"
  51.     PRINT "├────────────────────┼───────┼───────┤"
  52.     PRINT "│ Current Audio Time │       │       │"
  53.     PRINT "├────────────────────┼───────┼───────┤"
  54.     PRINT "│ Total Audio Time   │       │       │"
  55.     PRINT "├────────────────────┴───────┴───────┤"
  56.     PRINT "│   P      Play Audio Track          │"
  57.     PRINT "│   S      Stop Audio Playback       │"
  58.     PRINT "│   SPACE  Pause/Resume Audio Track  │"
  59.     PRINT "│   +      Next Audio Track          │"
  60.     PRINT "│   -      Previous Audio Track      │"
  61.     PRINT "│   TAB    Open/Close CD-ROM Door    │"
  62.     PRINT "│   ESC    End                       │"
  63.     PRINT "└────────────────────────────────────┘"
  64.  
  65.     DO
  66.  
  67.         LOCATE 19, 1
  68.  
  69.         IF (cd.status AND %CDPAUSED) = %CDPAUSED THEN
  70.             PRINT "PAUSED "
  71.         ELSEIF (cd.status AND %CDPLAYING) = %CDPLAYING THEN
  72.             PRINT "PLAYING"
  73.         ELSE
  74.             PRINT "       "
  75.         END IF
  76.  
  77.         keypress$ = UCASE$(INKEY$)
  78.  
  79.         SELECT CASE keypress$
  80.  
  81.             CASE CHR$(27)
  82.                 END
  83.  
  84.             CASE "P"
  85.                 cdPlay cddrive%, curTrack, 99, tracklist()
  86.  
  87.             CASE "S"
  88.                 cdStop cddrive%
  89.  
  90.             CASE " "
  91.                 IF (cd.status AND %CDPAUSED) = %CDPAUSED THEN
  92.                     cdResume cddrive%
  93.                 ELSE
  94.                     cdPause cddrive%
  95.                 END IF
  96.  
  97.             CASE "+"
  98.                 curTrack = curTrack MOD UBOUND(trackList) + 1
  99.                 cdPlay cddrive%, curTrack, 99, tracklist()
  100.  
  101.             CASE "-"
  102.                 curTrack = curTrack - 1
  103.                 IF curTrack = 0 THEN
  104.                     curTrack = UBOUND(trackList)
  105.                 END IF
  106.                 cdPlay cddrive%, curTrack, 99, tracklist()
  107.  
  108.             CASE CHR$(9)
  109.                 IF (cd.status AND %CDOPEN) = %CDOPEN THEN
  110.                     cdDoor cddrive%, 2
  111.                 ELSE
  112.                     cdStop cddrive%
  113.                     cdDoor cddrive%, 1
  114.                 END IF
  115.  
  116.             CASE ELSE
  117.                 cdGetInfo cddrive%, 0, cd, tracklist()
  118.                 UpdateDisplay
  119.         END SELECT
  120.  
  121.     LOOP
  122.  
  123.     END
  124.  
  125.  
  126. FUNCTION TimeStr$ (BYVAL mins AS INTEGER, BYVAL secs AS INTEGER)
  127.  
  128.     DIM text AS STRING
  129.  
  130.     IF secs% = 254 then    ' compensate for cd-rom seconds error
  131.         secs% = 0
  132.     END IF
  133.  
  134.     text$ = USING$("##", mins%) + ":" + USING$("##", secs%)
  135.  
  136.     REPLACE " " WITH "0" IN text$
  137.  
  138.     TimeStr$ = text$
  139.  
  140. END FUNCTION
  141.  
  142.  
  143. SUB UpdateDisplay
  144.  
  145.     LOCATE 4, 33: PRINT UBOUND(trackList)
  146.     LOCATE 8, 32: PRINT TimeStr$(cd.cdMins, cd.cdSecs)
  147.     LOCATE 4, 25: PRINT USING$("##", cd.track)
  148.     LOCATE 6, 32: PRINT TimeStr$(cd.cdMin, cd.cdSec)
  149.     LOCATE 6, 24: PRINT TimeStr$(cd.TrackMin, cd.TrackSec)
  150.     LOCATE 8, 24: PRINT TimeStr$(cd.TrackMins, cd.TrackSecs)
  151.  
  152. END SUB
  153.  
  154.